jsup 2.1 - "저녁이 있는 스팀" 실험

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/jsup-2-1 휴일도 주말도 없이 매일 포스팅하느라 남의 글 읽을 여유도 없고, 뭘 써야 하나 쥐어짜면서 재미도 없어지고 이런 상황이 반복되면서 스팀 커뮤니티도 퇴색하고 포스트 품질도 하향평준화되고 있는 것은 아닐까, 그런 생각을 예전부터 했습니다. 임대 셀프보팅이 언뜻 보기에는 수익률이 높은 것 같지만, 어쩌면 스팀의 재미를 심각하게 반감시키고 신규 사용자/투자자 유입을 저하시키면서 스팀 시세 자체를 추락시키는 심각한 요인이 되고 있는지도 모릅니다. 이 문제에 대한 대응 차원에서 투자와 소셜 플랫폼 기능을 분리하는 실험을 해 보려고 합니다. 1일1포스팅의 의무감에서 벗어나 좀 더 여유 있고 편안한 스팀 생활을 위한 jsup 2.1 - "저녁이 있는 스팀" 실험입니다. 스팀에 투자는 했지만 현생에 바쁘거나, 또는 글쓰기에 취미가 없는데 휴일/공휴일도 없는 1일1포스팅 때문에 스팀이 즐거움이 아니라 부담이 되어버린 경우에 한번 고려해 볼 만하다고 생각됩니다. 또한, 글쓰기에 전혀 취미가 없는 사람에게도 투자 관점에서 스팀 매수/파워업을 추천할 수 있는 여건이 될 수도 있지 않을까, 그런 생각도 듭니다. 오로지 보팅 때문에 어쩔 수 없이 매일 작성하는, 아무도 읽지 않는 한줄짜리 포스팅은 이제 과거의 추억으로 보내고, 부담 없는 편안한 마음으로 스팀에 투자하고 정말 기록하고 싶은 내용이 있을 때 정성 들여 포스팅하는 그런 스팀 생활이 가능해야 합니다. 그래서 내가 쓴 포스트를 다른 사람들이 와서 기꺼이 읽고, 나도 다른 사람들이 쓴 포스트를 궁금해 하는, 그런 스팀 생활이 가능해야 합니다. 친구들과 술 한잔을 해도, 여행을 가도, 출장을 가도, 명절에 가족들과 윷놀이를 하고 이야기꽃을 피우면서도, 마치 12시 종이 치기 전에 집으로 돌아가야 하는 신데렐라처럼 마음 한구석에서 포스팅 걱정을 해야...

파이썬에서 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 = root.find('./student')
print(first_student.attrib)
print(first_student[0].tag, first_student[0].attrib)

{'name': 'Bob'}
math {'score': '95'}

student 태그를 가진 원소를 모두 찾아서 속성을 출력하려면 아래와 같이 할 수 있습니다. findall() 함수를 사용했으니 결과는 리스트 형태이므로 for 반복문을 이용합니다.

all_students = root.findall('./student')
for item in all_students:
  print(item.attrib)

{'name': 'Bob'}
{'name': 'Alice'}

학생의 수학 점수를 찾고 싶다면 아래와 같이 할 수 있겠습니다. student 태그 하위에 있는 math 태그를 찾습니다.

first_math_score = root.find('./student/math')
print(first_math_score.attrib)

{'score': '95'}

루트 하위 전체 범위에서 검색하고 싶을 경우에는 아래와 같이 할 수 있습니다. physics 태그를 찾는 경우입니다.

physics_score_list = root.findall('.//physics')
for item in physics_score_list:
  print(item.tag, item.attrib)

physics {'score': '90'}
physics {'score': '97'}


@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다.

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

STEEM.NFT - 디지털 아트 보존 프로젝트


Posted through the AVLE Dapp (https://avle.io)

Comments

Popular posts from this blog

스티미언의 영향력 지수 계산

jsup/avle code update - you don't have to write post everyday

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