Posts

Showing posts from January, 2024

jsup/avle 보팅 코드 갱신 - 1일1포스팅 강박에서 벗어나기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/jsup-avle-1-1 안녕하세요. @joviansummer입니다. @jsup과 @avle의 보팅 코드를 갱신하여 적용하였습니다. 검토는 상당히 오래전부터 진행해 왔습니다만, 최근에 구체적인 설계 방향이 잡히고 기술적으로 어떻게 할 것인지에 대해서도 결정이 되면서 생각보다 빠르게 코드 수정이 진행되었습니다. 새로운 기능은 신청자에 대해서 포스팅이 아니라 댓글에도 보팅을 하는 것입니다. 매일 포스팅하는 것이 부담스럽고 힘들다면 댓글을 달면 됩니다. 당연히 1일1포스팅보다 1일1댓글이 훨씬 쉽고, 댓글을 많이 쓴다고 나쁠 것도 없다고 생각됩니다. 임대 보팅을 받기 위해 억지로 매일 포스팅하는 것은 본인에게도 괴로운 일이고 포스팅 자체도 결국 저품질화될 가능성이 큽니다. 매일 포스팅하는 것이 즐거운 사용자들도 있겠습니다만, 단지 보팅 때문에 억지로 쥐어 짜서 하루에 하나씩 힘들게 포스팅하거나 사실상 내용이 없다시피 한 포스팅을 하는 사용자들도 있는 것이 현실입니다. 보팅을 받아야 한다는 압박감으로 매일 억지로 포스트를 쓰기 시작하면서 스팀잇은 재미 없고 따분한 곳이 되어 갑니다. 게다가 스팀잇의 트렌딩 페이지는 사실상 대량의 임대 셀프 보팅을 받는 사용자의 포스팅을 모아놓은 공간처럼 되어 있어, 이대로 계속 가면 SNS 본연의 매력은 상실하고 코인 채굴장 그 이상도 이하도 아니게 될까 우려되는 측면도 있습니다. 댓글 보팅이 이런 문제를 완화하는데 조금이나마 기여할 수 있지 않을까 생각됩니다. 대상: @jsup 또는 @avle에 스팀파워를 임대하여 보팅을 받고 있는 계정 신청 방법: @jsup 또는 @joviansummer의 최근 포스트에 "댓글 보팅을 신청합니다"라는 내용으로 댓글을 써 주시면 됩니다. 제가 확인하고 서버에 등록하면 다음날부터 해당 계정은 포스트/댓글 관계 없이 그날 처음 작성하...

파이썬 beem에서 TransactionBuilder를 이용한 블러트(BLURT) 송금

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/beem-transactionbuilder-blurt 파이선 beem에서 TransactionBuilder 객체를 이용해서 블러트(BLURT)를 송금하는 방법입니다. 스팀/스팀달러 송금과는 약간 다른 부분이 있어서 정리해 둡니다. 스팀/스팀달러 송금은 아래의 링크입니다. 파이썬 beem에서 TransactionBuilder를 이용한 스팀/스팀달러 송금 기본적인 방식은 동일한데, 블러트에서는 Amount 객체를 이용해서 추가적으로 지정해야 하는 부분이 있습니다. @joviansummer에서 @jsup에게 0.001 블러트를 전송하는 예시는 아래와 같습니다. from beem import Blurt from beem.transactionbuilder import TransactionBuilder from beembase.operations import Transfer from beem.amount import Amount node_list = ["https://rpc.blurt.world"] b = Blurt(node=node_list) # 보내는 계정: joviansummer sender_id = 'joviansummer' # 보내는 계정의 액티브키 sender_active_key = '5XXXXXX....' # 받는 계정: jsup receiver_id = 'jsup' # 0.001 블러트 송금을 위한 Amount 객체 생성 amount = Amount(0.001, 'BLURT', blockchain_instance=b) # 송금 설정을 위한 딕셔너리 transfer_dict = {"from":sender_id, "to":receiver_id, "amount": amount, ...

파이썬에서 텍스트 파일을 읽어서 리스트에 할당

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/79yszz 파이썬에서 텍스트 파일을 읽어서 한줄이 하나의 원소가 되도록 리스트(list)를 만드는 방법입니다. 매우 간단합니다. f = open('my_file.txt', 'r') y = f.read() y_list = y.split('\n') 파일의 내용을 read()로 읽은 후에 줄바꿈(\n)을 기준으로 분할하면 리스트가 생성됩니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 Steemit-Search - 스팀잇 포스팅 검색 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬 함수에서 키워드 인자 사용 - kwargs

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/kwargs 파이썬에서 함후에 인자(argument)를 지정할 때 딕셔너리(dict)처럼 키(key)와 값(value)을 사용할 수 있습니다. 함수 코드를 작성할 때 인자에 "**kwargs"라고 지정하면 됩니다. 예시를 보면 금방 알 수 있습니다. def test_func(**kwargs): if 'x' in kwargs: my_val = kwargs['x'] else: my_val = 10 print(my_val) test_func(x=5) test_func() 5 10 위의 예시를 보면, test_func() 함수를 호출할 때 x의 값을 지정하면 지정한 값을 출력하고 지정하지 않으면 기본값(여기서는 10)을 출력합니다. 함수 안에서 kwargs는 딕셔너리이고, 키와 값은 함수를 호출할 때 지정하는 바에 따라 결정됩니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 Steemit-Search - 스팀잇 포스팅 검색 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬3에서 가상환경 설정 - venv

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/3-venv 예전에 파이썬의 virtualenv 모듈에 대해 썼던 적이 있는데요. 아래의 링크입니다. 파이썬에서 가상환경 설정 - virtualenv 사용할 일이 딱히 없어서 시험해 보지 않았었는데, 파이썬3에서 사용하는 가상환경은 virtualenv가 아니라 venv인 것 같더군요. 우분투 계열 리눅스에서 아래와 같이 패키지를 설치합니다. sudo apt-get install python3-venv 사용하는 요령은 virtualenv와 동일합니다. # 가상환경 test_venv 만들기 python3 -m venv test_venv # 가상환경으로 들어가기 cd test_venv source ./bin/activate # 가상환경에서 나가기 deactivate @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 Steemit-Search - 스팀잇 포스팅 검색 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬 beem에서 특정 계정의 댓글 이력 조회

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/4ejsog-beem 파이썬 beem을 이용해서 특정 계정의 댓글 이력을 조회할 수 있습니다. Account 객체의 comment_history() 함수를 이용하며, 제네레이터(generator) 형식으로 가져옵니다. 예시를 보면 감을 잡을 수 있을 것입니다. from beem import Steem from beem.account import Account s = Steem(node="https://api.steemit.com") a = Account('joviansummer', blockchain_instance=s) # 최근 5개의 댓글 가져오기 c_hist = a.comment_history(limit=5) # 댓글 Comment 객체를 하나씩 가져와 출력 for reply in c_hist: # 댓글 작성자(author) -> 본문 작성자(parent author) print(reply.author, '->', reply.parent_author) # Comment 객체의 내용 출력 print(reply.body) print(" ") comment_history 함수에서 limit 값을 지정하지 않으면 API 노드에서 줄 수 있는 최대한 많은 댓글을 가져올 수 있습니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 ...

스팀 공식 api 노드의 account history 불안정성

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/5wvuqz-api-account-history 그저께 밤에 스팀 api 노드(api.steemit.com)의 account history 응답이 불안정해서 보팅 서비스에 장애가 있었습니다. 한동안 꽤 안정적으로 잘 동작했는데 가끔씩 이런 문제가 생기네요. 일반 사용자 입장에서는 별 관심이 없을 수도 있겠지만, 서비스 개발/운영 측면에서는 꽤나 성가신 부분입니다. 사실 최근까지도 보팅 코드는 지속적으로 수정이 이루어졌습니다. 포스팅 확인을 좀 더 빠르고 효율적으로 하는 것, 그리고 오류가 발생했을 때 예외 처리를 하는 것이 코드 수정의 주된 목적이었습니다. 여기서 더 고치기 시작하면 소위 로우 레벨(low level) API를 사용해야 하는 부분들이 생기는데, 이렇게 하면 파이썬의 간결성과 편리성이 상당 부분 희생될 것 같습니다. 하지만 account history에 대한 의존성을 줄이려면 어쩔 수 없는 작업인지라 고민이 되는군요. 자체적으로 full node를 구축해서 보팅 서비스가 자체 구축한 노드와 통신하도록 한다면 이런 종류의 코드 수정은 전혀 필요 없겠지만, 이미 적자인 상태에서 추가적으로 서버를 구축하는 것은 불가능하기 때문에 결국 코드에서 해결하는 수밖에 없을 것 같습니다. 한편으로는 매일 장애가 발생하는 것도 아닌데, 어차피 고쳐도 확률을 낮춰줄 뿐이지 장애는 언젠가 다시 발생할텐데, 이 귀찮은 작업을 굳이 해야할 것인가라는 생각도 듭니다. 장애가 자주 발생하는 것은 아니기 때문에 그냥 이대로 놔두고 장애가 나면 그 때마다 복구하는 방식도 현재로서는 충분히 현실적인 선택이 아닌가 생각됩니다. 어차피 당장 뭘 수정할 것은 아니고 현재 진행중인 @jsup 서비스와 구글 블로그를 연결하는 작업이 일단락된 후에 좀 시간을 두고 고민을 해 봐야될 것 같습니다. @joviansummer의 스팀 프로젝트 스...

[EN] jsup-blog experiment: access token for Google Blogger

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/en-jsup-blog-experiment-access-token-for-google-blogger jsup-blog experiment: bridge between Steemit & Google Blogger To use Google Blogger API, an access token must be issued via protocol called "OAuth 2.0". You get "OAuth client ID" and then generate "credentials.json" file. Of course you must have a Google blog. The procedure is as follows. Sign to your Google Account with using a web browser, and then go to Blogger section of Google for Developers page. Check the link below: Blogger API: Using the API You will see a blue button labeled as "Get an OAuth client ID". Click it, and then select "Create a new project". Specify project name and prduct name. Set category as "Desktop App". Then click "CREATE" button. API setting is complete. Now click "DOWNLOAD CLIENT CONFIGURATION" button to download credentials.json fi...