Posts

Showing posts from November, 2023

파이썬에서 datetime.timezone()을 이용한 시간대 설정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/datetime-timezone 파이썬에서 datetime.timezone()을 이용해서 datetime 객체의 시간대를 설정할 수 있습니다. 예를 들어 한국시간(KST)은 GMT+9시간이므로 아래와 같이 설정해서 현재 시각을 구할 수 있습니다. import datetime KST = datetime.timezone(datetime.timedelta(hours=9)) now_kst = datetime.datetime.now(tz=KST) 시간대 정보가 없는 datetime 객체의 경우에는 앞의 예제 코드에서 정의된 변수 KST를 이용해서 아래와 같이 시간대를 할당할 수 있습니다. # 시간대 정보 없는 UTC 기준 현재시각 가져오기 - utcnow() now = datetime.datetime.utcnow() # 시간대 정보 추가 now_kst = now.astimezone(KST) @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 Steemit-Search - 스팀잇 포스팅 검색 STEEM.NFT - 디지털 아트 보존 프로젝트

[EN] Steemit-Search: a simple website for post searching

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/en-steemit-search-a-simple-website-for-post-searching Hello this is @joviansummer(witness account: @jswit). I made a simple website where you can search for steemit posts. After @michelangelo3's website(steem.uber.space) went offline, I wanted to revive the search feature. But it took me a while because I had little experience in web dev. Check the link below: https://steemit.vercel.app The search function employs @steemchiller's awesome SDS API, and maximum number of results is 50. If you encounter any error, feel free to reply to this post. Thank you for reading! @joviansummer's STEEM projects @jswit witness project: I'm running a STEEM witness node. I'd really appreciate it if you vote for my witness account @jswit. ( https://steemitwallet.com/~witnesses ) [ENG] Introducing @jswit witness project @jsup curation project: [ENG] Introduction to @jsup curation project [ENG] U

AI와 디지털 아트 도용 사례, 그리고 steem.nft 프로젝트

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/ai-steemnft 요즘 AI를 이용한 이미지 생성이 사람을 위협하는 수준으로 올라왔습니다. 그에 따라 부작용들도 생기기 시작하는 것 같네요. 인터넷에서 아래의 기사를 보게 되었습니다. Someone stole a live artist’s art via an AI – Kudasai 영문인데 주요 내용은 이렇습니다. AT라는 필명을 쓰는 한국 일러스트레이터가 트위치에서 생방송으로 그림 그리는 과정을 중계했다고 합니다. 그런데 생방송이 다 끝나기 전에 musaish라는 트위터 사용자가 방송 화면을 캡처한 후에 NovelAI라는 AI를 이용해서 변형을 한 후 원작자가 완성판을 트위터에 올리기 전에 먼저 트위터에 올렸습니다. 그리고는 오히려 원작자에게 그림을 도용했다고 공격을 했다는 것입니다. 결국 들통이 나고 계정을 삭제했다는군요. 이런 식이라면 디지털 아트 분야에서 도둑이 AI를 이용해서 오히려 원주인을 저작권 도용자로 몰아가는 일이 가능해 진다는 얘기가 됩니다. AT라는 작가가 그린 완성 버전은 아래의 그림입니다. musaish라는 도둑이 중간 버전을 캡쳐해서 AI를 이용해서 만든 버전은 아래의 그림입니다. 정말로 결과물만 보면 어느쪽이 어느쪽을 도용했는지 알 수가 없겠네요. AT 작가의 트위터는 아래의 링크입니다. https://twitter.com/haruno_intro 실제 종이에 그리는 그림이라면 좀 다르겠지만, 디지털 아트라면 자신의 작품을 인터넷에 처음 공개할 때는 SNS보다는 블럭체인에 가장 먼저 기록을 남기는 것이 더 낫겠다는 생각이 듭니다. 블럭체인에 SNS를 결합한 스팀잇에 일단 공개해서 해당 작품의 공개 시점을 변조 불가능하게 블럭체인이 기록한 후에 트위터에 올리던지 다른데 올리던지 하는 것도 좋은 방법일 것 같습니다. 스팀잇의 기본 이미지 서버에 저장하는 것만으로는 부족하다 싶다면 @

파이썬 딕셔너리(dict)의 키(key)들을 모아 리스트 생성 - keys()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-key-keys 파이썬 딕셔너리(dict)의 키(key)들을 모아서 리스트를 만드는 방법입니다. 딕셔너리의 keys() 함수를 이용합니다. x_dict = {'a':1, 'b':2, 'c':3} x_keys = x_dict.keys() keys() 함수에 의해 반환되는 객체는 dict_keys입니다. 이것을 리스트로 변환합니다. x_list = list(x_keys) print(x_list) ['a', 'b', 'c'] 딕셔너리의 값(value)들을 모아서 리스트로 만들려면 values() 함수를 사용하며, 요령은 같습니다. 아래의 링크를 참고하시기 바랍니다. 파이썬 딕셔너리(dict)의 값(value)들을 모아 리스트 생성 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 json.dumps()에서 한글 문자열 보존

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/jsondumps 파이썬에서 딕셔너리(dict)를 문자열(str)로 변환할 때 json.dumps() 함수를 활용하게 되는데, 문자열이 한글일 경우 아래와 같이 제대로 표시되지 않을 수 있습니다. import json x_dict = { 'a': '이것은 테스트용 문자열' } x_str = json.dumps(x_dict) print(x_str) {"a": "\uc774\uac83\uc740 \ud14c\uc2a4\ud2b8\uc6a9 \ubb38\uc790\uc5f4"} 한글이 제대로 나오게 하려면 아래와 같이 ensure_ascii 옵션을 False로 지정해야 합니다. x_str = json.dumps(x_dict, ensure_ascii=False) print(x_str) {"a": "이것은 테스트용 문자열"} @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬과 SDS API를 이용해서 특정 계정을 증인 프록시(witness proxy)로 설정한 계정 조회

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/sds-api-witness-proxy SDS API를 이용해서 특정 계정을 증인 프록시로 설정한 계정의 목록을 조회할 수 있습니다. 예를 들어 @avle 계정을 증인 프록시로 설정한 계정들을 조회하려면 아래와 같이 할 수 있습니다. import requests import json steem_id = 'avle' sds_url = 'https://sds.steemworld.org/witnesses_api/getAccountsByWitnessProxy/' + steem_id response = requests.get(sds_url) res_dict = json.loads(response.text) res_list = res_dict["result"] requests.get()을 이용해서 증인 프록시를 조회하기 위한 url에 접속해서 응답을 받아 옵니다. 응답은 json 형식의 문자열인데, json.loads() 함수를 이용해서 딕셔너리(dict) 형식으로 변환합니다. "result" 키(key)에 계정 목록이 있으므로, 위의 예시처럼 해당 키의 값을 가져오면 됩니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avl

파이썬 beem에서 특정 계정이 소유한 스팀파워 확인

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/04f18-beem 파이썬 beem에서 특정 계정이 소유한 스팀파워를 확인하는 방법입니다. Account 모듈의 get_vests() 함수를 이용합니다. from beem import Steem from beem.account import Account node_list = ["https://api.steemit.com"] s = Steem(node=node_list) a = Account('joviansummer', blockchain_instance=s) my_vests = a.get_vests(only_own_vests=True) get_vests() 함수에서 임대를 받거나 준 스팀파워를 제외하고 본인이 소유한 스팀파워, 즉 자체 스팀파워를 파악하기 위해 only_own_vests=True로 인자를 지정해 줍니다. 반환되어 변수 my_vests에 할당된 결과는 beem에서 제공하는 Amount 객체이며 스팀파워가 아니라 vest값입니다. 이로부터 vest값을 부동소수점 수자(float)로 가져와 스팀파워로 변환을 합니다. 변환은 Steem 객체의 vests_to_sp() 함수를 이용합니다. my_vests_float = my_vests.amount my_sp = s.vests_to_sp(my_vests_float) print(my_sp, "SP") @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트

파이썬 딕셔너리에서 숫자(int, float)도 키(key)로 사용 가능

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/int-float-key 파이썬 딕셔너리(dict)의 키(key)는 문자열(str)만 사용해 왔기 때문에 막연하게 키는 문자열을 사용한다고 생각했었는데, 숫자(int, float)도 가능하네요. x = {'a':1.5, 1.2:3, 2:'abc'} print(x[1.2]) 3 위의 예시처럼 문자열, 정수, 부동소수점 다 사용 가능합니다. 하지만 정수를 키로 사용할 경우에는 리스트(list)의 인덱스와 혼동할 가능성도 있어 보입니다. 위의 예에서 x[2]라고 하면 리스트의 인덱스 2번이 아니라 딕셔너리의 키가 2라는 의미가 됩니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 flask에서 html 파일을 응답으로 전송

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/flask-html 파이썬 flask로 구현한 웹앱에서 웹브라우저의 요청을 받고 html 파일을 응답으로 보낼 수 있습니다. flask 모듈의 render_template() 함수를 이용하며, html 파일은 웹앱 스크립트(.py 파일)가 있는 디렉토리 하위에 templates 디렉토리를 만들어서 여기에 저장해야 합니다. 아래의 예시는 templates 디렉토리 하위에 있는 index.html 파일을 이용해서 응답하는 경우입니다. from flask import Flask from flask import render_template app = Flask(__name__) @app.route('/') def root_page(): return render_template('index.html') # 본 스크립트를 import하지 않고 직접 실행할 경우 flask 자체 웹서버 실행(포트 5000) if __name__ == "__main__": app.run(host='127.0.0.1', port=5000) 엄밀히 말하면 html로 구성된 템플릿(template)을 응답하는 것으로, 웹앱 코드 안에서 정의된 데이터를 html 페이지에 표시할 수 있는 것 같습니다. 이 부분은 좀 더 공부를 해 봐야겠습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀

파이썬 beem에서 특정 포스트의 보팅 목록 확인

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/2764b6-beem 파이썬 beem에서 특정 포스트에 누가 얼만큼 보팅했는지 확인하는 방법입니다. 보팅 목록은 Comment 객체에서 "active_votes" 키(key)에 할당된 데이터를 조회하면 됩니다. 예시를 보자면 아래와 같습니다. from beem import Steem from beem.comment import Comment node_list = ['https://api.steemit.com'] steem = Steem(node=node_list) authorperm = 'joviansummer/b01bb' comment = Comment(authorperm, blockchain_instance=steem) for v_info in comment['active_votes']: print("voter:", v_info['voter'], ", rshares:", v_info['rshares']) 위의 예시에서 comment['active_votes']에는 보팅 목록이 리스트(list) 형식으로 할당되어 있으며, 각 원소는 딕셔너리(dict) 형식입니다. 원소의 "voter" 키에는 보팅한 계정이 할당되어 있고 "rshares" 키에는 보팅 분량이 할당되어 있습니다. 리스트 예시를 보자면 아래와 같습니다. [{'voter': 'gerber', 'rshares': 53606309}, {'voter': 'ezzy', 'rshares': 37690507983}, ..., {'voter': 'princesslayla

파이썬의 간단한 웹(http) 서버

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/http 파일을 간단하게 공유하고 싶을 때 파이썬에서 제공하는 간단한 웹서버를 활용할 수 있습니다. 공유하고 싶은 디렉토리로 간 후에 http.server 모듈을 실행하면 됩니다. 리눅스의 경우 아래와 같이 할 수 있습니다. cd ~/shared_files python3 -m http.server 5001 위와 같이 하면 홈디렉토리 하위의 shared_files 디렉토리의 파일을 공유할 수 있는 웹서버가 실행되며, 포트번호는 5001번이 됩니다. 제대로 동작하는지는 웹브라우저에서 http://localhost:5001에 접속해 보면 확인할 수 있겠습니다. 단순 파일 공유 기능인데, 집에서 이쪽 기기에서 저쪽 기기로 파일을 옮기고 싶을 때 편리하네요. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

pythonanywhere.com에 파이썬 flask 웹앱 호스팅 예시

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/pythonanywherecom-flask 무료로 파이썬 웹앱을 호스팅할 수 있는 pythonanywhere.com에 대한 소개는 이전에 포스팅했습니다. 아래의 링크입니다. 무료 파이썬 호스팅 - pythonanywhere.com 파이썬 flask를 이용하는 웹앱을 pythonanywhere에 호스팅하는 설명 자료입니다. 영문이긴 하지만 참고할 만한 것 같아서 기록해 둡니다. 아래의 링크입니다. https://pythonhow.com/python-tutorial/flask/deploy-flask-web-app-pythonanywhere/ pythonanywhere 웹사이트의 도움말 페이지에도 flask 웹앱에 대한 안내가 있습니다. 아래의 링크입니다. https://help.pythonanywhere.com/pages/Flask @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 예외(exception) 발생 메시지를 문자열로 가져오기 - traceback

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/exception-traceback 파이썬에서 예외가 발생했을 경우 이를 출력하는 방법은 traceback.print_exc() 함수를 이용합니다. 관련 내용은 아래의 링크입니다. 파이썬의 try - except 구문에서 오류 메시지 출력(traceback) 오류 메시지를 출력하는 대신 문자열(string) 형식으로 변수에 저장하고 싶다면 traceback.format_exc() 함수를 사용하면 됩니다. import traceback try: x = 100/0 except: print("예외가 발생했습니다.") # 오류 메시지를 문자열 형식으로 exc_str 변수에 저장 exc_str = traceback.format_exc() print(exc_str) @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

Steemit-Search: 간단한 스팀잇 포스트 검색 웹페이지

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/steemit-search 스팀잇의 포스트 검색 기능을 간단한 웹페이지로 구현했습니다. @michelangelo3님의 스팀잇 검색 웹사이트(steem.uber.space)가 사라진 이후로 검색 기능을 되살리고 싶었는데, 웹 개발 경험이 없다 보니 생각보다 꽤 시간이 걸렸네요. 검색 엔진은 @steemchiller님의 SDS API를 사용했습니다. 아래의 웹사이트에 가서 검색하시면 됩니다. https://steemit.vercel.app 검색 결과는 최대 50개까지 표시하도록 했습니다. 전문 웹개발자가 아니라 혹시라도 오류가 발생하거나 제대로 동작하지 않는 경우 댓글로 남겨 주시면 살펴 보겠습니다. 감사합니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬에서 마크다운(markdown) 문자열을 html로 변환

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/markdown-html 파이썬에서 python-markdown을 이용해서 마크다운 문자열을 html로 바꿀 수 있습니다. python-markdown 설명서 웹사이트는 아래의 링크입니다. https://python-markdown.github.io/reference/ 우선 마크다운 모듈을 설치해야 합니다. pip3 install markdown 이제 마크 다운 문자열을 html로 바꿀 수 있습니다. 아래의 예시를 보면 금방 알 수 있습니다. import markdown markdown_str = '**Hello World!**' html_str = markdown.markdown(markdown_str) print(html_str) \ \ Hello World!\ \ 코드 블럭 등 부가적인 마크다운 문법에 대한 처리를 위해서는 아래와 같이 확장(extension) 옵션을 지정합니다. html_str = markdown.markdown(markdown_str, extensions=['extra']) 일단 extra를 추가하면 기본적인 변환에는 크게 문제가 없을 것 같습니다. 지원하는 확장 목록은 아래의 링크에서 확인할 수 있습니다. https://python-markdown.github.io/extensions/ @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

파이썬에서 파일이 마지막으로 수정된 시점 확인하기 - os.path.getmtime()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/ospathgetmtime 파이썬에서 특정 파일이 마지막으로 수정된 시점을 확인하려면 os.path.getmtime() 함수를 사용할 수 있습니다. 예시를 보자면 아래와 같습니다. import os m_time = os.path.getmtime('my_file.txt') 위의 예시는 my_file.txt 파일의 마지막 수정 시점을 구해서 변수 m_time에 할당하는 경우입니다. 형식은 부동소수점수자(float)이며, 유닉스 타임스탬프 형식으로 가져옵니다. 출력해 보면 아래와 같이 될 것입니다. print(m_time) 1662183247.925591 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

html 기초 - 외부 링크

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/ac4ac2-html html에서 외부 링크는 " "라는 태그를 이용해서 href 속성을 통해 지정해 줍니다. 예를 들어 표시할 내용은 "Hello World"이고 링크가 "https://steemit.com/@joviansummer/3v1wmj"라면 html에서는 아래와 같이 될 것입니다. "Hello World"를 클릭하면 해당 링크로 접속하게 되겠죠. <a href="https://steemit.com/hello/@joviansummer/3v1wmj">Hello World</a> 만약 링크를 클랙했을 때 새 탭으로 접속하도록 만들려면 target 속성을 아래와 같이 추가로 지정해 줍니다. <a href="https://steemit.com/hello/@joviansummer/3v1wmj" target="_blank">Hello World</a> 새 탭에서 열기를 사용하려면 rel 속성을 아래와 같이 포함하는 것이 안전하다고 합니다. 이렇게 하지 않으면 해킹에 취약할 수 있는 여지가 있다는데, 웹에 대해 조예가 깊지 않아서 자세한 내용은 복잡해서 잘 모르겠지만 어쨌든 아래와 같이 해 주는 것을 권고하는 것 같습니다. <a href="https://steemit.com/hello/@joviansummer/3v1wmj" target="_blank" rel="noopener noreferrer">Hello World</a> @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemi

파이썬에서 리스트의 길이를 일정하게 유지하는 예시(오래된 원소 제거)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/ca5472 파이썬에서 리스트에 원소를 추가하면서 일정 길이를 넘지 않도록 가장 오래된 원소를 제거하는 예시입니다. 리스트 길이, 즉 원소의 수가 3을 넘지 않도록 하면서 원소를 추가하는 함수를 아래와 같이 만들어 볼 수 있습니다. MY_LIST = [] MAX_LEN = 3 def add_item(item): global MY_LIST if len(MY_LIST) == MAX_LEN: MY_LIST.pop(0) MY_LIST.append(item) 변수 MY_LIST의 길이가 3이 되면 인덱스 0의 원소를 제거하고, 새로 추가할 원소를 append() 함수를 이용해서 가장 마지막 인덱스에 추가되도록 합니다. 아래와 같이 수자 0~4를 차례로 추가하는 경우를 보면, 길이를 3 이하로 유지하기 때문에 처음에 추가했던 0과 1을 제거되고 MY_LIST는 [2, 3, 4] 이렇게 됩니다. for i in range(5): add_item(i) print(MY_LIST) @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

html 기초 - 캐럭터 인코딩 정보 표시

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/90303a-html 우선 html 페이지의 기본 구성에 대한 내용은 아래의 링크입니다. html 페이지의 기본 구성 html 페이지에 캐럭터 인코딩 정보를 표시하려면 head 영역에 meta 태그를 추가해 주어야 합니다. 예를 들어 utf-8 인코딩을 사용한다면 아래의 예시처럼 될 것입니다. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello World</title> </head> ... utf-8 인코딩을 사용할 경우에는 이 meta 태그를 추가하지 않아도 괜찮은 것 같습니다. 하지만 만약 다른 인코딩을 사용한다면 명시를 해 주는 것이 좋다고 합니다. 웹브라우저에서 인코딩을 잘못 선택하면 글씨가 다 깨질 수도 있다고 하네요. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

html 기초 - 페이지의 기본 구성

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/html 파이썬 flask를 보면서 같이 찾아보게 된 내용입니다. 웹사이트의 html 페이지의 기본 구성은 html 태그 안에 head와 body로 되어 있습니다. head 영역에는 제목을 나타내는 title이 있습니다. 예를 들면 아래와 같은 형태입니다. <!DOCTYPE html> <html> <head> <title>Hello World</title> </head> <body> <p>Hello World!</p> </body> </html> 위의 형식으로 body 영역에 내용을 채우면 웹브라우저에서 페이지를 표시해 줍니다. head 영역의 title은 웹브라우저의 실행창 제목에 나타납니다. 참고로 body 영역의 태그는 단락(paragraph)입니다. html 태그도 찾아보니 종류가 꽤나 많은 것 같습니다. 한꺼번에 공부하기는 시간이 많이 걸릴 듯하고 필요할 때마다 찾아보는 것이 나을 것 같네요. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 waitress 웹서버(flask와 연동 가능)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/waitress-flask 파이썬 flask에서 Flask 객체의 run() 함수를 호출하면 웹서버가 구동됩니다. 이 웹서버는 디버깅을 목적으로 구현된 것이라고 합니다. 성능이나 보안 측면에서 취약하기 때문에 실제로 인터넷에 공개할 웹서버에 대해서는 사용하지 않아야 한다고 합니다. 그래서 어떻게 할 것인가 좀 찾아보니, flask와 연동해서 구동할 수 있는 별도의 웹서버 모듈이 있네요. waitress라는 파이썬 모듈입니다. 우분투 계열 리눅스의 경우 아래와 같이 python3-waitress 패키지를 설치합니다. sudo apt-get install python3-waitress 만약 flask를 이용해서 작성한 웹 앱 스크립트가 test.py라면, 같은 디렉토리에 server.py 스크립트를 아래와 같은 내용으로 만들어 줄 수 있습니다. from waitress import serve # test.py 사용 import test serve(test.app, host='127.0.0.1', port=5000) 위와 같이 작성한 후, test.py가 아니라 server.py를 실행하여 test.py에 작성된 웹 앱을 구동합니다. test.py 스크립트를 import할 때는 flask 자체 웹서버가 구동되지 않아야 하므로 run() 함수가 실행되면 안됩니다. 이런 이유로 test.py 스크립트에서 자체 웹서버 구동과 관련된 내용은 아래와 같은 형태로 작성되어야 합니다. from flask import Flask app = Flask(__name__) ... if __name__ == "__main__": app.run(host='127.0.0.1', port=5000) waitress 모듈의 설명서는 아래의 링크입니다. https://docs.pylon

파이썬 flask에서 응답 종류(mimetype) 지정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/flask-mimetype 파이썬 flask에서 접속 요청에 대한 응답을 보낼 때 종류(mimetype)을 지정하는 방법입니다. Response 객체를 이용하면 됩니다. 예제를 보겠습니다. from flask import Flask from flask import Response app = Flask(__name__) @app.route('/') def root_page(): return Response('<b>hello world!</b>', mimetype='text/html') @app.route('/test/') def test_page(): return Response('test', mimetype='text/plain') if __name__ == "__main__": app.run(host='127.0.0.1', port=5000) 출력할 페이지를 반환(return)할 때 Response 객체를 이용해서 "hello world!" 출력은 html 형식(text/html), "test" 출력은 일반 텍스트(text/plain)라고 지정해 주었습니다. 웹브라우저에게 데이터 형식을 알려주면 응답을 화면에 표시할 것인지 다운로드할 것인지를 좀 더 정확하게 판단할 수 있겠죠. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션

윈도우에서 파이썬 설치

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/3qbwcw 리눅스에서는 통상 파이썬이 기본으로 설치되어 따라오는데, 윈도우에서는 별도로 설치를 해 줘야 합니다. 설치 과정은 다음과 같습니다. 파이썬 공식 홈페이지(python.org)의 윈도우 버전 다운로드 페이지로 갑니다. 아래의 링크입니다. Python Releases for Windows Stable Releases에서 "Windows Installer(64-bit)"을 선택해서 다운로드합니다. 가장 최신 버전은 현재 3.12.0입니다. 3.12.0 또는 3.11.6을 받으면 되겠습니다. 다운로드 받은 설치 파일을 실행해서 설치를 진행합니다. 여기서 중요한 것은 설치 화면이 나왔을 때 "Add python.exe to PATH" 항목을 반드시 체크해 주는 것입니다. PATH에 파이썬이 추가되어야 나중에 명령어 프롬프트에서 파이썬을 사용할 때 문제가 없습니다. 체크한 후에 "Install Now"를 선택해서 설치를 진행합니다. 설치가 완료되면 명령 프롬프트(cmd)에서 실행하면 됩니다. 시험 삼아 메모장에서 아래와 같은 내용을 작성해서 test.py 파일로 저장해 봅니다. print("Hello World!") 명령 프롬프트에서 해당 파일이 있는 디렉토리로 가서 실제로 "Hello World!"가 출력되는지 실행해 봅니다. python test.py @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시

파이썬 flask로 hello world 웹페이지 작성

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/flask-hello-world 파이썬 flask로 간단한 웹페이지를 만드는 예시입니다. 우선 flask 모듈을 설치합니다. 우분투 계열 리눅스의 경우 아래와 같이 python3-flask 패키지를 설치해 주면 됩니다. sudo apt-get install python3-flask 예제 코드는 매우 간단합니다. from flask import Flask app = Flask(__name__) @app.route('/') def root_page(): return "hello world!" @app.route('/test/') def test_page(): return "test" # 본 스크립트를 import하지 않고 직접 실행할 경우 flask 자체 웹서버 실행(포트 5000) if __name__ == "__main__": app.run(host='127.0.0.1', port=5000) 위와 같은 스크립트를 실행하면 웹서버가 구동되어 루프백(loopback) 주소(127.0.0.1)의 5000번 포트를 열게 됩니다. 루트 페이지(http://localhost:5000/)에 접속하면 문자열 "hello world!"가 표시되고, 테스트 페이지(http://localhost:5000/test/)에 접속하면 문자열 "test"가 표시됩니다. 어떤 페이지에 접속하면 어떤 내용을 표시해 줄 것인지를 위와 같이 함수를 정의하고 데코레이터(decorator)를 이용해서 웹 앱의 route() 함수가 해당 함수를 받아서 처리합니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://

파이썬에서 xml 원소에 문자열(text) 추가/변경

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/xml-text 이전 포스트에서 예시로 사용했던 xml 파일 일부를 가져와 보면 아래와 같습니다. <?xml version="1.0"?> <data> <student name="Bob"> <math score="95"></math> <physics score="90"></physics> </student> ... 예를 들어서 Bob의 수학 점수 원소에 대해서 성적 등급을 "A+" 이런 식으로 문자열로 추가하고 싶다고 해 보겠습니다. 즉, 위의 예시에 math 태그를 아래와 같이 변경하고자 합니다. <math score="95">A+</math> 이렇게 하려면 아래와 같이 해당 원소를 찾은 후, 문자열을 지정해 주면 되겠습니다. 이미 문자열이 있을 경우 덮어쓰기가 되므로, 문자열 변경에도 동일한 방법을 사용합니다. math_element = root.find("./student/[@name='Bob']/math") math_element.text = 'A+' @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT -

파이썬에서 xml 원소의 특정 속성(attrib)값 수정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/af2f9a-xml-attrib 파이썬에서 xml 원소의 속성(attrib)값을 수정하는 방법입니다. 이전에 작성한 포스트에서 이어지는 내용입니다. 관련 포스트는 아래의 링크입니다. 파이썬에서 xml 원소의 특정 속성(attrib) 검색 예를 들어 student 태그에서 name 속성의 값이 Alice의 수학 점수를 변경하고 싶다면 아래와 같이 할 수 있겠습니다. find() 함수로 해당 원소를 찾은 후, set() 함수로 변경합니다. search_math_res = root.find("./student/[@name='Alice']/math") print(search_math_res.attrb) {'score': '91'} 해당 원소의 속성 딕셔너리의 키(key)와 값(value)을 아래와 같이 set(key, value) 형태로 지정하여 변경할 수 있습니다. search_math_res.set('score', '92') new_res = root.find("./student/[@name='Alice']/math") print(new_res.attrib) {'score': '92'} @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT

파이썬에서 xml 원소의 특정 속성(attrib) 검색

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/xml-attrib 파이썬에서 xml 파일에 대해 특정 속성을 지닌 원소 검색을 해 보겠습니다. test.xml 파일의 내용은 아래와 같습니다. <?xml version="1.0"?> <data> <student name="Bob"> <math score="95"></math> <physics score="90"></physics> </student> <student name="Alice"> <math score="91"></math> <physics score="97"></physics> </student> </data> 예를 들어 루트 하위에 있는 student 태그의 속성 name 값이 Bob인 원소를 찾고 싶다면 아래와 같이 할 수 있습니다. search_name_res = root.find("./student/[@name='Bob']) print(search_name_res.attrib) {'name': 'Bob'} 만약 Bob의 수학 점수를 찾고 싶다면 아래와 같이 할 수 있겠습니다. search_math_res = root.find("./student/[@name='Bob']/math") print(search_math_res.tag, search_math_res.attrib) math {'score': '95'} @joviansummer의 스팀 프로젝트 스팀

vercel.com에 파이썬 flask 웹 앱 호스팅 예시 - 2

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/vercelcom-flask-2 얼마전에 vercel.com에 파이선 flask로 개발한 웹 앱을 호스팅하는 예시를 발견해서 포스팅했습니다. 아래의 링크입니다. vercel.com에 파이썬 flask 웹 앱 호스팅 예시 예시를 하나 더 찾았기에 기록해 둡니다. 첫번째 예시와 마찬가지로 영어이긴 하지만, 참고가 될 듯합니다. 아래의 링크입니다. https://andrewbaisden.medium.com/how-to-deploy-a-python-flask-app-to-vercel-ff4a63d312f4 여전히 매우 간단한 웹 앱이긴 하지만, 첫번째로 포스팅했던 예시 보다는 조금 더 그럴듯한(?) 예시인 것 같습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 xml 원소의 특정 태그 검색하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/7eced2-xml 우선, 파이썬에서 xml 파일을 읽는 방법은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬에서 xml 파일 읽기 위 포스트와 동일한 xml 파일을 가지고 원소 검색을 해 보겠습니다. test.xml 파일의 내용은 아래와 같습니다. <?xml version="1.0"?> <data> <student name="Bob"> <math score="95"></math> <physics score="90"></physics> </student> <student name="Alice"> <math score="91"></math> <physics score="97"></physics> </student> </data> 이 xml 파일을 읽어서 원소 트리(element tree)의 루트를 가져옵니다. import xml.etree.ElementTree as ET test_tree = ET.parse('test.xml') root = ET.getroot() 이제 몇가지 검색을 해 볼 수 있습니다. find() 또는 findall() 함수를 이용합니다. find() 함수는 조건에 맞는 첫번째 원소 하나만 가져오고, findall() 함수는 조건에 맞는 모든 원소를 리스트(list) 형식으로 가져옵니다. 루트의 바로 하위에 student 태그를 가진 원소를 찾아서 속성을 출력하고 싶다면 아래와 같이 할 수 있습니다. first_student = roo

파이썬에서 xml 파일 읽기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/xml 파이썬에서 xml 파일을 읽어서 내용을 조회할 수 있습니다. 기본으로 제공되는 xml 모듈을 활용합니다. 예를 들어 아래와 같은 내용의 test.xml 파일이 있다고 생각해 보겠습니다. <?xml version="1.0"?> <data> <student name="Bob"> <math score="95"></math> <physics score="90"></physics> </student> <student name="Alice"> <math score="91"></math> <physics score="97"></physics> </student> </data> 이 파일의 데이터를 읽으려면 아래와 같이 할 수 있습니다. ElementTree의 parse() 함수를 이용해서 파일을 읽은 후, getgoot() 함수를 이용해서 트리의 루트를 가져옵니다. import xml.etree.ElementTree as ET test_tree = ET.parse('test.xml') root = test_tree.getroot() # 루트 태그 출력 print(test_root.tag) data 이제 data 태그 하위에 있는 student 태그와 속성(attribute)를 조회할 수 있습니다. 첫번째 원소는 root[0], 두번째 원서는 root[1]이 됩니다. 속성은 딕션너리(dict) 형식입니다. # 루트 하위 첫번째 원소의 태그와 속성(attribute) 확인 prin

파이썬에서 문자열 여러개를 합칠 때 생각할 점 - join() 함수

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/join 파이썬에서 문자열 여러개를 합칠 때, 두가지 정도 방법을 생각해 볼 수 있습니다. 첫번째는 '+' 연산자를 사용하는 방법입니다. x = 'a' y = 'b' z = 'c' result = x + ' ' + y + ' ' + z print(result) a b c 두번째 방법은 join() 함수를 이용하는 것입니다. 결과는 동일합니다. # 공백을 구분자로 사용하여 합치기 result = ' '.join([x,y,z]) print(result) 결과는 같으나, 합치려는 문자열이 많으면 join()을 사용하는 것이 좀 더 성능이 좋다고 합니다. 위의 예시에서 '+' 연산자를 사용하면 순차적으로 하나씩 더하기 때문에 메모리 할당과 내용 복사 작업이 많이 발생하는데 join() 함수를 사용할 경우엔 한번에 다 합치기 때문에 작업량이 더 적다고 하네요. 문자열 개수가 별로 많지 않으면 상관 없겠지만, 많을 경우에는 성능 측면을 고려하는 것도 좋을 것 같습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 리스트의 처음 또는 중간에 원소 추가 - insert()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/insert 파이썬에서 리스트의 마지막에 원소를 추가할 때는 append() 함수를 사용하는데, 처음 또는 중간에 원소를 추가하려면 insert() 함수를 사용하면 됩니다. 예시를 보겠습니다. x = ['a', 'b'] # 맨 뒤에 'c' 추가(append) x.append('c') # 맨 앞(인덱스 0)에 'd' 추가(insert) x.insert(0, 'd') print(x) ['d', 'a', 'b', 'c'] 삽입하려는 원소가 어느 위치(인덱스 번호)에 있을 것인지 지정하면 해당 위치에 있던 원소부터 뒤쪽까지의 원소들이 뒤로 밀리게 됩니다. # 앞에서 두번째(인덱스 1)에 'e' 추가 x.insert(1, 'e') print(x) ['d', 'e', 'a', 'b', 'c'] @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 requests를 이용해서 바이너리 데이터를 HTTP POST로 전송

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/requests-http-post 파이썬 requests 모듈을 이용해서 바이너리 데이터(그림 파일 등)를 서버로 전송하는 경우을 보겠습니다. 아래와 같이 할 수 있습니다. import requests url = 'http://my_server.net/send_bin_data/' # 이미지 파일 f = open('my_image.jpg', 'r') my_data = f.read() f.close() result = requests.post(url, data=my_data, headers={'Content-Type': 'application/octet-stream'}) print(result.text) 바이너리 데이터를 전송하면서 HTTP POST 요청 헤더에 Content-Type을 application/octet-stream으로 지정해 주었습니다. json 데이터를 전송하는 경우는 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬 requests를 이용해서 json 데이터를 HTTP POST로 전송 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 requests를 이용해서 json 데이터를 HTTP POST로 전송

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/requests-json-http-post 파이썬의 requests 모듈을 이용해서 HTTP GET 요청을 사용하는 예시는 아래의 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬에서 스팀잇 웹접속을 통한 최근 포스팅 주소(url) 확인 여기서는 json 데이터를 서버쪽에 HTTP POST 요청을 이용해서 전송하는 경우를 보겠습니다. import requests url = 'http://my_server.net/send_json_data/' my_json_data = [{ "my_key_1": "my_value_1"}, {"my_key_2":"my_value_2"}] result = requests.post(url, json=my_json_data) print(result.text) requests.post() 함수를 이용해서 my_server.net에 접속하여 json 데이터를 보낸 후, 서버로부터 받은 응답을 출력하는 경우입니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

vercel.com에 파이썬 flask 웹 앱 호스팅 예시

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/vercelcom-flask 얼마전에 포스팅했던 무료 파이선 호스팅 서비스 vercel.com에 대해 포스팅을 했습니다. 아래의 링크입니다. 무료 파이썬 호스팅 - vercel.com vercel에 파이썬으로 만든 웹 앱을 호스팅하는 예시가 있는 블로그 포스트가 있네요. 영어이긴 하지만 아주 복잡하진 않은 것 같습니다. 아래의 링크입니다. https://huogerac.hashnode.dev/deploy-flask-for-free-with-vercel 파이썬의 flask 모듈을 이용해서 만든 웹 앱을 호스팅하는 예시입니다. 그냥 한줄 텍스트를 표시하는 웹 앱이기 때문에 매우 간단해 보이는 측면도 있긴 합니다만, 어쨌든 호스팅 과정이 아주 복잡하진 않은 것 같습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 별도의 스레드(thread)로 함수 무한 반복 실행 - Timer

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/thread-timer 파이썬에서 일정 주기로 특정 작업을 별도의 스레드로 무한 반복 실행할 수 있습니다. threading 모듈의 Timer 객체를 사용하며, 기본적인 내용은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬에서 일정 시간 이후 특정 함수 호출 - Timer 여기서는 20초마다 "hello world" 문자열을 무한히 반복해서 출력하는 예시를 보겠습니다. import threading def repeat(): print("hello world") timer = threading.Timer(20, repeat) timer.start() repeat() print("timer") 여기서는 repeat() 함수 내부에서 자기 자신을 Timer 객체의 인자(argument)로 사용하고 있습니다. 처음에 repeat() 함수를 호출하면, 우선 "hello world" 문자열을 출력하고 Timer 객체를 생성하여 자기 자신을 20초후에 다시 호출하도록 합니다. 이렇게 다시 호출된 repeat() 함수에서 또 다시 자기 자신을 20초후에 다시 호출하도록 함으로써 무한 반복이 이루어집니다. 따라서, 위의 코드를 실행하면 우선 "hello world"가 출력되고 곧바로 다음에 "timer"가 출력된 후 이후 20초 간격으로 "hello world"가 무한 반복으로 출력됩니다. hello world timer hello world hello world ... @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~w

파이썬에서 일정 시간 이후 특정 함수 호출 - Timer

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/timer 파이썬에서 일정 시간을 기다렸다가 함수를 호출할 수 있습니다. threading 모듈의 Timer 객체를 사용합니다. 예시를 보겠습니다. import threading def func(): print("hello world") # 10초후에 함수 func()를 호출하는 객체 생성 timer = threading.Timer(10, func) # 타이머 실행. 10초후 func() 함수 호출 timer.start() # 여기는 곧바로 실행 print("timer") 위의 예시에서 timer.start()가 실행되는 시점부터 10초 후에 func() 함수가 실행됩니다. 그 아래에 있는 출력 명령("timer" 문자열 출력)은 곧바로 실행이 됩니다. 따라서 위의 코드를 실행하면 곧바로 "timer"가 출력되고, 10초후에 "hello world"가 출력되어 아래와 같은 형태의 결과가 될 것입니다. timer hello world @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 딕셔너리의 원소 순서를 뒤집어서 읽기 - reversed()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/reversed 파이썬의 딕셔너리(dict)에 저장된 원소를 역순으로 뒤집어서 뭔가 처리를 하는 방법입니다. 딕셔너리에는 리스트처럼 원소 순서 자체를 뒤집을 수 있는 함수가 없기 때문에 조금 다른 방법을 사용합니다. 참고로 리스트의 원소 순서를 뒤집는 방법은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬 리스트의 원소 순서 뒤집기 - reverse() 딕셔너리의 경우 for 반복문과 reversed() 함수를 조합해서 역순으로 원소를 읽어올 수 있습니다. 아래의 예제 코드를 보면 딕셔너리의 키(key)를 역순으로 가져옵니다. x = {'a':1, 'b':2, 'c':3} for key in reversed(x): print(key, x[key]) c 3 b 2 a 1 reversed() 함수는 리스트에 대해서도 활용 가능합니다. x = ['a', 'b', 'c'] for item in reversed(x): print(item) c b a @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 리스트의 원소 순서 뒤집기 - reverse()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/reverse 파이썬의 리스트(list) 원소의 순서를 역순으로 뒤집을 수 있습니다. 리스트의 reverse() 함수를 이용합니다. 예시를 보면 금방 알 수 있습니다. x = ['a', 'b', 'c'] print(x) ['a', 'b', 'c'] 순서를 바꾸려면 아래와 같이 합니다. x.reverse() print(x) ['c', 'b', 'a'] 순차적으로 원소를 리스트에 저장한 후에 역순으로 뭔가 처리를 해야 할 때 간단하게 순서를 뒤집을 수 있습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

무료 파이썬 호스팅 - vercel.com

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/vercelcom 얼마전에 pythonanywhere.com이라는 무료 파이썬 호스팅 서비스를 찾았었는데요. 무료 서비스를 하나 더 발견했습니다. 우선 pythonanywhere 포스트는 아래의 링크입니다. 무료 파이썬 호스팅 - pythonanywhere.com vercel.com은 파이썬에만 특화된 서비스는 아니고 다양한 언어를 지원하는 것 같습니다. 어쨌든 파이썬으로 개발한 웹 앱도 호스팅해 준다고 합니다. 개인용 취미 프로젝트를 무료로 호스팅할 수 있게 해 주는 것 같습니다. 홈페이지는 아래의 링크입니다. https://vercel.com/ @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬의 웹 개발 모듈

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/6dc7c8 최근에 알게된 파이썬의 웹 개발 모듈이 있는데 flask와 django입니다. flask의 홈페이지는 아래의 링크입니다. https://flask.palletsprojects.com/en/2.2.x/ django의 홈페이지는 아래의 링크입니다. https://www.djangoproject.com/ 간단한 웹사이트는 flask로 빠르고 편리하게 만들어 볼 수 있다는 얘기가 있어서 공부 차원에서 우선 flask를 시간이 날 때 조금씩 살펴보려고 합니다. 당장 웹 개발을 할 것 같진 않지만 일단은 궁금증 해소 차원입니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 유닉스 타임스탬프를 부동소수점 형식으로 가져오기 - time.time()

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/timetime 파이썬에서 현재 시각에 해당하는 유닉스 타임스탬프(timestamp)를 부동소수점(float) 형식으로 가져올 수 있습니다. 아래와 같이 할 수 있습니다. import time now_tstamp = time.time() 위의 예시에서 now_stamp 변수에 저장되는 형식은 float이며, 현재 시각 타임스탬프를 소수점 일곱번째 자리까지 표시됩니다. 시간대 정보는 별도로 없으므로 현재 시스템의 시간 기준이라고 보면 됩니다. 일반적으로는 datetime 객체를 이용하는 것이 편리하지만 타임스탬프만 빠르게 얻고 싶다면 이 방법을 사용하는 것도 괜찮습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 딕셔너리(dict)의 값(value)들을 모아 리스트 생성

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-value 파이썬에서 딕셔너리(dict)에 저장된 값들을 모아서 리스트(list)를 만들 수 있습니다. 예시를 보면 금방 알 수 있습니다. x_dict = {'a':1, 'b':2, 'c':3} x_vals = x_dict.values() 딕셔너리에서 values() 함수는 딕셔너리의 값들을 모아 dict_values라는 객체를 생성해서 반환합니다. 이것은 리스트가 아니므로 리스트로 변환해 주면 되겠습니다. x_list = list(x_vals) print(x_list) [1, 2, 3] @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 리스트 원소값의 합계, 평균 계산

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/03a196 파이썬에서 리스트(list) 원소들이 수자일 경우 합과 평균값을 간편하게 계산할 수 있습니다. 원소의 합은 sum() 함수를 이용하면 됩니다. x = [1.2, 2, 3, 4.5] print(sum(x)) 10.7 평균은 합계를 원소의 수로 나누면 되므로, len() 함수로 원소의 개수를 구해서 이용하면 됩니다. avg = sum(x) / len(x) print(avg) 2.675 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬에서 특정 날짜의 시작 시점과 종료 시점의 datetime 객체 생성

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/a61123-datetime 파이썬에서 특정 날짜의 00시 00분 00초, 그리고 23시 59분 59초에 대응하는 datetime 객체를 간편하게 만들 수 있습니다. 특정 시점에 대응하는 문자열로부터 datetime 객체를 생성하는 strptime() 함수를 이용합니다. 기본적은 내용은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬에서 시간 문자열과 datetime 객체 전환 - strptime(), strftime() 예를 들어 2022년 12월 10일에 대해서는 아래와 같이 만들 수 있겠습니다. import datetime date_str = '20221210' datetime_start_str = date_str + '.000000' datetime_end_str = date_str + '.235959' datetime_start = datetime.datetime.strptime(datetime_start_str, "%Y%m%d.%H%M%S") datetime_end = datetime.datetime.strptime(datetime_end_str, "%Y%m%d.%H%M%S") print(datetime_start) print(datetime_end) 2022-12-10 00:00:00 2022-12-10 23:59:59 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다.

파이썬에서 소수점 특정 자리수의 반올림, 올림, 내림

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/86b984 우선 정수 기준의 반올림, 올림, 내림은 이전에 포스팅했습니다. 아래의 링크입니다. 파이썬에서 수자 반올림, 올림, 내림 파이썬에서 정수가 아니라 소수점 자리에서 반올림, 올림, 내림을 하는 방법입니다. 예를 들어 소수점 세째자리까지 유효 수자로 간주하고 네째자리의 값을 반올림, 올림, 내림하는 경우를 보겠습니다. 반올림은 round() 함수를 아래와 같이 사용할 수 있습니다. x = 1.3463 y = 1.3469 print(round(x,3)) print(round(y,3)) 1.346 1.347 올림과 내림에 사용하는 math.ceil(), math.floor() 함수는 정수 기준이기 때문에 소수점을 기준으로 하려면 아래와 같이 할 수 있겠습니다. import math x = 1.3463 x_ceil = math.ceil(x*1000) / 1000 print(x_ceil) 1.347 소수점 세째자리까지 취하고 싶기 때문에 우선 1000을 곱해서 해당 부분까지 정수가 되도록한 후 math.ceil() 함수로 올림을 수행하고, 다시 1000으로 나누어서 결과를 얻었습니다. 내림도 동일한 요령으로 하면 되겠습니다. import math y = 1.3469 y_floor = math.floor(y*1000) / 1000 print(y_floor) 1.346 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로

파이썬 requests에서 시간초과(timeout) 설정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/requests-timeout 파이썬에서 웹페이지에 접속하기 위해 사용하는 requests 모듈에서 시간초과를 지정하는 방법입니다. 이전에 작성했던 포스트 " 파이썬과 SDS를 이용한 스팀 정보 조회 "의 예제 코드를 다시 한번 보겠습니다. import requests wit_id = 'jswit' sds_url = 'https://sds1.steemworld.org/witnesses_api/getWitnessRank/' + wit_id response = requests.get(sds_url) print(response.text) requests.get() 함수를 이용해서 지정된 주소(URL)로 GET 요청을 보내는 경우입니다. 여기에 시간초과 설정을 인자(argument)로 추가합니다. 예를 들어 기다리는 시간을 10초로 설정하려면 아래와 같이 합니다. response = requests.get(sds_url, timeout=10) 별도로 시간초과를 설정하지 않을 경우 무한정 기다릴 수도 있기 때문에, 되도록 설정해 주는 것이 나을 것 같습니다. 지정된 시간내에 응답이 오지 않으면 예외가 발생하므로 try/except 구문과도 조합하는 것이 좋겠습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬에서 수자 반올림, 올림, 내림

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/cf1653 파이썬에서 수자에 대해 반올림, 올림, 내림을 하는 방법입니다. 반올림은 round() 함수를 이용하면 됩니다. x = 1.3 y = 1.6 print(round(x)) print(round(y)) 1 2 올림은 math 모듈에서 제공하는 math.ceil() 함수를 이용합니다. import math x = 1.3 print(math.ceil(x)) 2 내림은 math 모듈에서 제공하는 math.floor() 함수를 이용합니다. import math y = 1.6 print(math.floor(y)) 1 내림의 경우에는 정수형(int)으로 변환을 해도 동일한 효과입니다. y = 1.6 print(int(y)) 1 @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 beem에서 스팀 API 노드 전환

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/bbde83-beem-api 파이썬 beem에서 스팀 API 노드에 문제가 있을 경우 다른 노드로 전환하는 방법입니다. 접속 대상 노드 목록을 리스트(list)로 가지고 있다가, 접속에 실패하면 순차적으로 다른 노드에 접속하도록 할 수 있습니다. 예제를 보겠습니다. from beem import Steem from beem.account import Account import time # 접속 노드 목록 node_list = ['https://api.steemit.com', 'https://"https://steemapi.boylikegirl.club"] # 초기 인덱스값 0 node_idx = 0 while True: try: print("API 노드 접속:", node_list[node_idx]) # 인덱스 node_idx에 해당하는 원소가 접속 대상 API노드 s = Steem(node=node_list[node_idx]) a = Account(steem_id, blockchain_instance=s) # 예외 발생 없이 접속이 완료되었으면 무한 루프에서 탈출 break except: print("API 노드 접속 실패:", node_list[node_idx]) print("다른 노드로 전환합니다.") # 다음 인덱스에 있는 노드로 접속하도록 node_idx 갱신 node_idx = (node_idx + 1) % node_list_len print("접속 성공:", node_list[node_idx]) try/except 구문을 이용해서 Steem 객체와 Account 객체가 예외 발생 없이 정상적으로 생성되면 무한 루

파이썬에서 리스트 원소를 계속 돌아가면서 순차적으로 가져오기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/86886b 파이썬에서 리스트 원소를 순차적으로 가져오는데, 원수 개수보다 많은 회수를 가져올 경우 다시 처음으로 돌아가는 식으로 가져오는 예시입니다. 예를 들어 원소가 3개인 리스트에서 인덱스 0번부터 2번까지 가져오고, 그다음엔 다시 0번 이런식으로 순차적으로 가져오는 경우입니다. 모듈로(modulo) 연산자(%)를 활용해서 간단하게 구현할 수 있습니다. x = ['a', 'b', 'c'] len_x = len(x) for i in range(5): idx = i % len_x print(x[idx]) a b c a b @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬 데코레이터(decorator) 설명 자료

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/decorator 파이썬의 데코레이터 관련 자료입니다. 함수의 인자(argument)에 다른 함수를 전달해서 처리하는 방식인 것 같은데, 아직 명쾌하게 이해가 되지는 않네요. 좀 더 공부하다 보면 이해할 가능성도 있으니 일단은 찾은 자료를 기록해 놓기로 했습니다. 우선 pythonbasics.org라는 웹사이트의 자료입니다. Python Decorators Introduction - pythonbasics.org 예전에 한번 포스팅했던 askpython.com 웹사이트 에도 데코레이터 설명 자료가 있습니다. Decorators in Python - askpython.com 직접 사용할 일이 있을 것 같지는 않은데, 다른 사람이 작성한 코드를 읽을 수 있으려면 알아두면 좋을 것 같긴 합니다. 당장은 직접적인 필요성을 못 느껴서 그런지 확 와 닿지는 않네요. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다. jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트 Posted through the AVLE Dapp ( https://avle.io )

파이썬과 SDS를 이용해서 특정 기간 동안의 계정 이력 조회

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/60bf81-sds 파이썬과 SDS를 통해서 특정 기간 동안의 계정 이력(account history)을 조회할 수 있습니다. 우선 SDS API 활용에 대한 기본적인 내용은 아래의 링크를 참고하시기 바랍니다. SDS API의 기본적인 사용법 계정 이력 조회와 관련된 SDS API 설명서는 아래의 링크입니다. https://sds1.steemworld.org/describeMethod/account_history_api.getHistoryByOpTypesTime 이 API는 특정 계정에 대하여 특정 종류의 오퍼레이션(operation)을 수행한 이력을 조회합니다. 조회기간은 유닉스 타임스탬프(unix timestamp) 형식으로 지정하며, 요청 형식은 아래과 같습니다. https://sds1.steemworld.org/account_history_api/getHistoryByOpTypesTime/[account]/[op_types]/[start_timestamp]-[end_timestamp]/ 아래의 예시는 파이썬의 requests 모듈을 이용해서 1시간(3600초)전부터 현재 시점까지 @joviansummer의 포스팅/댓글 작성 및 보팅 이력를 조회하는 경우입니다. 오퍼레이션 종류를 2개 이상 지정할 경우엔 쉼표(,)로 구분하며 포스팅/댓글은 "comment", 보팅은 "vote"입니다. import requests import json import datetime # 대상 계정 steem_id = 'joviansummer' # 오퍼레이션 종류: 포스팅/댓글, 보팅 op_types = 'comment,vote' # 현재 시각 now = datetime.datetime.now() # 타임스탬프 형식으로 변환 now_ts = int(now.str

파이썬 beem에서 특정 블럭번호에 속한 트랜잭션(오퍼레이션) 조회

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/59767e-beem 파이썬 beem을 이용해서 특정 블럭 번호에 속한 트랜잭션(오퍼레이션)을 조회할 수 있습니다. beem.block 모듈에서 제공하는 Block 객체를 이용합니다. 우선 트랜잭션과 오퍼레이션에 관한 내용은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다. 파이썬 + 스팀: 트랜잭션(transaction)과 오퍼레이션(operation) 아래의 예시는 블럭 번호 69075700에 해당하는 블럭을 확인하는 예제입니다. from beem.steem import Steem from beem.block import Block steem_nodes = ["https://api.steemit.com"] steem = Steem(node=steem_nodes) blk_num = 69075700 blk = Block(blk_num, blockchain_instance=steem) blk_ops = blk.operations 위의 예시에서 변수 blk_ops는 리스트(list)가 되며, 각 원소는 해당 블럭에 저장된 오퍼레이션입니다. 첫번째 원소를 출력해 보면 아래와 같습니다. print(blk_ops[0]) {'type': 'vote_operation', 'value': {'voter': 'bigtakosensei', 'author': 'vivigibelis', 'permlink': 'steemit-engagement-challenge-s5-w4-mis-5-sentidos', 'weight': 1400}} 각 오퍼레이션 정보는 딕셔너리(dict) 형식이며 키(key)는 type과 value가 있습니다. type에는 오퍼레이션의 종류(