koistudy2 / server

Web & DB server of koistudy2
6 stars 1 forks source link

각 문제에 대한 정보를 가져오는 방법 : list or dict? #14

Closed Namnamseo closed 9 years ago

Namnamseo commented 9 years ago

13 을 해결해서 표에 출력시켰습니다.

probs.py의 problist가 {0 : {ㅁㅁㅁ}, 1 : {ㄴㄴㄴ}}의 dictionary 형태라서, for i in problist 하면 0과 1이 받아졌습니다. 이 부분 수정했구요.

표의 헤더 부분(Number, Verdict, ...)에 대해 조금 고민해봐야 할 것 같습니다. 일단 새로운 헤더가 나중에 추가될 수 있습니다. (챔피언을 띄우거나?) 그래서 하드코딩하기보다는 key_list를 들고 있고, 이 key list를 먼저 에 넣어준 후, 이후 각 문제에 대한 정보에서 그 key에 대한 value를 들고 오도록 했습니다. (그래서 key는 list이고, 각 문제에 대한 정보는 dict입니다)

DB에서 자료를 긁어와 화면에 그릴 때, 이 key와 value를 dict 형태로 묶는 것이 낭비라는 생각이 듭니다. key_list의 순서대로 value들을 list로 만들어서, 이걸 바로 넘겨주는 게 코드나 성능 면에서 나을 것 같습니다. 어떻게 생각하시나요?

그러니까 4a562c64bbeea80e275ae558b4a1fe07cc51b035 에서는 [num, verdict, ...] 라는, key값의 순서와, 그걸 테이블 헤더에 그릴 display name을 정해놨구요, 각 문제에 대해 DB에서 {num:1, verdict:AC, ...} 를 얻은 후, key 값 list를 돌며 dict에서 출력시켰는데,

DB에서 각 문제에 대한 가져올 때 [num,verdict, ...] 순으로 가져온다는 약속을 하고, key list와 이 list들의 list만 넘겨주면 dict를 구성하는 것보다 빠르지 않을 까 해서요.

hletrd commented 9 years ago

하지만 어차피 MongoDB에 저장되는 형태는 dict라서 그것도 고려해야 할 것 같아요. DB에 리스트로 저장된다면 다른 부분도 다 리스트로 처리하는게 용량이나 속도상 이득이지만, 어차피 dict로 저장되면 좀 더 코드를 읽기 편하게 하는게 낫지 않을까 싶네여

Namnamseo commented 9 years ago

dict로 저장하기로 결정했습니다 6c50ec1e01cf92dc828e49fab8071cebcbcee613