Skip to content
This repository has been archived by the owner on Sep 12, 2018. It is now read-only.

코드 접기기능 추가 #935

Open
wants to merge 8 commits into
base: next
Choose a base branch
from
Open

코드 접기기능 추가 #935

wants to merge 8 commits into from

Conversation

umsukgod
Copy link

pull request 페이지에서 code diff 부분에 좀 더 효율적이고 수월하게 코드를 살펴볼수 있도록 파일마다 코드를 접을 수 있도록 설정하였습니다. 새로고침을 해도 접은 기억은 남아있습니다.

var tbody = document.getElementById(fileId);
if($.cookie(fileId) == 'notfolded'){
tbody.style.display = 'none';
$.cookie(fileId,'folded');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음. 쿠키로 괜찮을까요? 뭐라 판단하기가 좀 어렵네요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여러가지를 검색해본 결과 가장 무난하고 쿠키를 yobi에서 쓴 흔적이 있어서 썻습니다. 많은 경우를 본 건 아니지만 저의 경우에는 별 문제 없었습니다. 혹시 이부분에서 쿠키를 썻을 때 발생할만한 문제가 있나요? 아니면 다른방식 더 좋은게 있나요?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cookie key/value size 제한이 4k 정도라고 알고 있는데
fileId는 모양이 대략 어떻게 되는거죠?
그리고 다른 코드 주고받기의 화면에서도 fileId가 같아서 의도하지 않게 접히거나 펼쳐지거나 할 가능성은 없나요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 fileId의 모양은 "src/thread/sema.c"로 파일의 path, 이름을 저장하는 string입니다. 4k 의 크기는 걱정안해도 될것입니다! 검색해본결과 쿠키는 클라이언트의 브라우저에는 저장되나 서버에는 저장되지않아서 다른브라우저의 유저랑은 공유가 안될 것입니다. 만약 같은브라우저에서 다른 주고받기의 화면으로 같은 파일에 들어간다고 한다면, 흠. 실험해보고 결과를 봐보겟습니다. 안된다면 쿠키에 코드 주고받기 자체의 id를 추가하여 구현하면 될것같아요. 날카로운 피드백 감사드립니다.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

쿠키 크기/갯수에는 제약이 있을 수 있기 때문에 이와 같이 데이터를 쿠키에 넣으면 예상하지 못한 문제를 일으킬 수 있습니다. 예를 들어 쿠키 갯수는 도메인당 50개라는 제약이 있을 수 있는데(RFC 6265는 user agent가 그런 제약을 갖는 것을 허용합니다1) 이런 제약을 만나게 되는 경우 웹브라우저는 다른 쿠키를 버리는 선택을 할 수도 있습니다. 그러면 로그인이 풀린다거나 할 수도 있겠지요.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그리고 이 데이터는 서버에 보낼 필요가 없지 않나요? 서버에 보낼 필요가 없다면 쿠키에 넣을 이유도 없을 것입니다. 클라이언트만 사용할 것이라면 로컬 스토리지에 넣는 편이 낫겠지요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와.... 그럴수가있군요. 혹시나 파일같은게 너무많거나 중첩이되면 충분히 일어날 수 있겠네요ㅠ 넵 그런걸 보아하니 로컬스토리지가 더 알맞은 사용인거같습니다. 수정해보겟습니다!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저장소였던 cookie를 전부 localStorage 로 바꾸었고, 한번씩 코드를 접었다 폈다 해야만 코드 접는게 기록이 되었던 자잘한 오류도 알고리즘을 약간 바꿔서 고쳤습니다. 현재 이 접기 기억 부분에서 좀더 개선할점이 더 있을까요?
그리고 습관적으로 tab을 쓰다보니 한두줄은 tab 때문에 다시커밋했습니다 죄송합니다...
버튼으로 제가 쓴 yobicon보다 더 어울리는게 있는지, 좀더 부가적인 기능을 추가할만한것이 있는지 말씀도 해주시면 감사드리겠습니다!ㅎ

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@doortts 그리고 다른 코드 주고받기의 화면에서도 fileId가 같아서 의도하지 않게 접히거나 펼쳐지거나 할 가능성은 없나요?
에 대한 실험을 해본결과 모든 같은 파일에서 저절로 접어지게 되있더라구요. 그래서 localStorage의 key 값을 commit id와 같이 묶어서
기존에
src/threads/thread.c
였다면
/admin/OSproject/code/379937eddf8aad4a77ec78a71ce6cbe6fdc7cd4d/src/threads/thread.c
로 바꾸어서 했습니다. 그랫더니 다른 커밋으로 부터 온 코드는 접혀지지 않게 되었습니다. 물론 같은코드 같은 커밋에서는 접혀지게 됩니다. 완전히 같은 내용일테니 접혀지는것이 더 reasonable 하다고 생각했습니다. 그리고 구현도 구조를 바꾸지 않아도 되구요. 만약에 같은 커밋이지만 다른 경로로 들어가는 경우도 접히게 한다면 partial_diff 와 partial_filediff의 구조를 바꾸어야했습니다.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants