What I Learned: Level1 javascript-racingcar

동동·2021년 4월 25일
2

0. PR 링크

1. 학습 로그

1. 왜 파일의 마지막은 newline으로 끝나야 할까?

정확하게 말하면 파일의 마지막에 newline을 추가하는 것이 아니라, 파일 마지막의 newline을 제거하지 않아야 합니다. 왜냐하면, 예전부터 POSIX에서 line을 개행문자로 끝이 나는 시퀀스로 정의하였기 때문에 이런 정의에 따르면 파일의 마지막에 newline이 없으면 마지막 줄은 POSIX에서 정의한 line의 정의에 맞지 않게 된다.
따라서 line by line 으로 텍스트를 읽는 프로그램의 경우, 마지막 줄을 line으로 보지 않아 처리하지 않을 수 있다.

3.206 line

A sequence of zero or more non- <newline> characters plus a terminating <newline> character.

번역 : 0 또는 개행문자(newline)가 아닌 문자들이 나오다가 개행문자(newline)로 끝이 나는 시퀀스

예를 들어 C 컴파일러인 gcc는, 소스코드를 한 줄씩(line by line)으로 읽게되므로 파일 끝에 newline이 없으면 실제로 파일은 끝이 났지만 개행문자가 없어서 한 줄이 끝나지 않은 것으로 인식해서 정상적으로 동작하지 않는 이슈가 발생한다.
cat 과 같이 터미널상에서 파일 내용을 출력하는 명령어들을 사용할 경우, 아래와 같은 형태로 출력되는 것을 종종 보곤한다.

$ cat nonewline.txt # newline 하지 않았을 때 
nonewline$ cat newline.txt 
newline 
$

현대에 사용되는 컴파일러들은 위와 같이 파일 끝에 개행문자가 없어서 컴파일이 안되는 상황은 없을 것이다. (Warning 메시지는 나오겠지만)

하지만, 내가 의도한 것과 다르게 결과가 노출되는 경우(위에서 말한 cat과 같이)가 있을 수 있기 때문에 항상 파일 끝에 개행문자를 넣어놓는 것이 좋다.

또한 prettier 나 vscode setting, eslintconfig를 사용한다면, 이를 자동으로 파일 마지막 줄의 newline을 추가할 수 있다.

추후 정리용 Reference)

2. 커밋전 prettier, eslint 자동화

커밋전 prettier, eslint를 적용하는 습관을 들이는 것보다 자동화 도구를 도입하는 것이 더 좋은 이유는 현업에서 프로젝트는 나 혼자만 하지 않는다는 것입니다.
프로젝트에 참여하는 팀원 전부가 습관을 들여야 한다면 그 비용이 꽤 크다.

3. hidden attribute

Global attribute인 hidden attribute는 해당 element가 아직 관련이 없거나, 더이상 관련이 없는지를 나타내는 boolean attribute 입니다. 예를 들어, 현재 상황과 관련없는 페이지의 elements를 숨기는데 사용될 수 있습니다. 브라우저는 hidden attribute가 설정된 elements를 설정하지 않습니다.

hidden attribute는 단순히 하나의 표현방식에서 숨기기 위해서 사용되어서는 안됩니다. 만약 어떤 것이 hidden으로 설정되면, 스크린 리더기 등 모든 표현방식에서 사라지게 됩니다.

일반적으로 브라우저에서는 이를 CSS를 적용하여 구현하므로, HTML Element의 display 속성을 CSS에서 명시적으로 지정한 경우에는, hidden 속성이 있더라도 이를 override 하게 되는 것으로 이해하였습니다.

Because this attribute is typically implemented using CSS, it's also possible to override it using CSS. For instance, a rule that applies 'display: block' to all elements will cancel the effects of the hidden attribute. Authors therefore have to take care when writing their style sheets to make sure that the attribute is still styled as expected.
https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute

Changing the value of the CSS display property on an element with the hidden attribute overrides the behavior. For instance, elements styled display: flex will be displayed despite the hidden attribute's presence.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/hidden

※ Global attributes are attributes common to all HTML elements

profile
작은 실패, 빠른 피드백, 다시 시도

0개의 댓글