1. JSON과 XML
XML(eXtensible Markup Language)
<xml version='1.0'>
<toy>robot</toy>
<fruit>apple</fruit>
</xml>
- 마크업 언어로서, 데이터를 정의할 때 쓰인다.
- 해당 문서의 요소는 데이터로서, 유저는 작성된 데이터를 저장하여 다른곳에 전송한다.
- HTML과 유사한 방식으로 데이터에 해당되는 태그를 열고 닫음으로서, 데이터를 정의한다.
- XML에는 데이터설명,버전을 적을 수 있어, 이를 이용해 데이터의 무결성을 보장한다.
- 따라서, 은행,정부문서와 같은 데이터의 무결성이 중요한 곳에서 XML을 주로 사용한다.
- 문서를 파싱하여, 가공가능 한 데이터로 만드는 것에 시간이 필요하다.
JSON(JavaScript Object Notation)
{
"toy" : "robot",
"fruit" : "apple"
}
- key : value 쌍으로 이루어진, 데이터 형태
- JSON은 자바스크립트 함수인 eval()로 파싱되어 해석된다.
- 문자열을 전송받은 후 곧바로 문자열을 파싱하므로 XML에 비하여 가공속도가 빠르다.
- 따라서, 빨리 읽고 쓸 수 있다는 장점이 있다.
- 하지만, 데이터의 버전이나, 설명같은 부가설명을 할 수 없기 때문에 무결성을 보장 할 수 없다.
- 따라서, 무결성 보장을 위한 검증을 추가적으로 신경써줘야한다.
- JSON은 XML과 다르게, 배열사용이 가능하다.
2. [회고] 221102 회고
- 팀 프로젝트 진행
- 팀원들 문제 해결1 : git flow
- 팀원들 문제 해결2 : 업무 할당
1)
개인 게시판 마크업이 끝나고, 팀원들의 모든 HTML파일을 모았다. 팀원명을 클릭했을 때, 클릭한 팀원의 페이지로 이동하는 로직을 작성해야했다.
팀원들이 5명인데, 기존에는 팀원들 5명에대한 html을 rendering하는 함수를 일일히 작성해야하는지 고민했다.
같은 기능이 반복될 것 같아서, 지속적으로 고민하다 갑자기 문득떠오른게 query parameter을 이용하여, 동적으로 html파일을 선택하고 rendering하는 방법이었다!
query parameter 전달기능을 곧바로 app.py
에 적용해보았는데 잘 동작하길래 곧바로 아래의 api를 작성하여 적용하였다.
이제 우리 팀페이지는 하나의 함수에서 동적으로 선택되어 보여진다.
@app.route("/members", methods=["GET"])
def members():
parameter_dict = request.args.to_dict()
name = parameter_dict['name']
return render_template(f'members/{name}.html')
2)
나의 욕심으로 이번 프로젝트에서 팀원들이 git을 사용하도록 제안하였다. 아침에 진실의 방(=휴게실)에서 git을 사용하는 모습을 간단히 시연해드렸는데, 처음에 3분만 계셨는데 시연이 모두 끝나고 돌아보니깐 팀원들이 모두 시연을 보러와주셨다. 휴게실 책상이 작은데 옹기종기 모여있는 모습이 귀여웠다.
public repo에 권한만 있다면, 다른팀원들도 PR을 없이 push/pull 다 할 수 있을 줄 알았는데, 내 착각이었다.
역시나 권한문제가 발생하였고, 내 repo를 fork해서 PR을 날려야 하는 상황이 되었다.
죄송하다고 말씀드리고 모든 팀원들의 remote origin
을 fork repo로 변경하는 것을 도와드렸다. 원래는 가이드 드릴 때 직접적인 커멘드를 말씀드리지 않았는데, 배우지 않은 부분이라 지금어떤일을 하고 있는지 정도만 이해시키고 내가 커멘드를 직접 말씀드리며 가이드를 드렸다.
몇몇 분들은 아직 아리까리하시다고 피드백 주셨지만, 금새 적응하여 PR을 하시고, 재미있어하는 모습을 보여주셔서 내가 다 뿌듯했다.
git문제를 해결해드리면서, 가장 신경을 썻던 것은 '내가 문제를 직접적으로 해결해드리지 않는것'과 '정답을 말하지 않는 것'이었다. 가이드가 끝나고 난 뒤, 혹시 의사를 결정하는데 있어서 내 의견이 많이 방해가 되었는지, 문제를 해결하고 난 뒤 온전히 본인 것이라는 기분이 들지 않는지, 흐름은 이해되셨는지 체크했다. 다행히도, 긍정적인 반응들을 보내주셔서 감사했다.
3)
팀원들이 모두 집중 할 수 있는 프로젝트가 되었으면 해서 끊임없이 어떻게 업무를 분배하면 좋을지 고민했다. 메인페이지 + 개인페이지의 구성으로 이루어진 프로젝트 특성상 개인페이지의 작업을 모두 마친 현상태에서, 메인페이지로 오버헤드가 몰릴 것이 당연한 상황이었다.
따라서, 메인페이지에 업무가 모이지 않도록 다른 곳으로 업무를 분산시키는 것이 좋겠다는 생각을 했고, 모든 페이지를 모아서 작업을 할 때, 필요한 작업들을 추려서 팀원숫자만큼 나누어보았다.
어쩌다보니, 프로젝트 리드(?) 같은 역할을 수행하게 되었는데 팀장과 역할이 겹치는 부분이 많아서 불편해 하실 수 있겠다는 생각이 들어 내가 하는 고민들을 공유하는게 낫겠다는 판단이 들어 팀장님께 내가하고 있는 고민들을 공유드리기 위해 미팅을 요청드렸다.
오히려 내 고민을 이해해주시고, 오히려 생각못한 상황들을 대신 생각해줘서 고마웠다 라는 말씀을 해주셔서 너무 감사했다. 모두가 끊임없이 작업 할 수 있는 환경을 위해 남은 팀원들에게 git branch 를 생성하는 방법을 전달해주었고, 팀원들이 작업을 시작했다.
나는 남은 Due까지 모두가 지치지 않고, 프로젝트를 끝 마칠 수 있도록 돕고싶고, 도울것이다. 팀원들의 성장을 막는 행동은 지속적으로 신경써서 하지 않으려고 한다.
3. [회고] 내일 다짐
- 팀원의 생각흐름에 관여하지 않기, 흐르는 대로 함께가고, 그곳에서 최선의 방법을 찾아서 제시해주기.
- 상대방의 성취감을 뺏지않으려고 노력하기
- 자바 기본 문법 3단원까지 공부하기