난, 그동안 stackoverflow 만 있으면 개발이 되는줄 알고있었다. 그런데, 이번에 카카오 데이터 센터 화재 사건 때문에 내가 꽤 많이 티스토리 사이트들에 의존적인지 알게 되었다. 영어로된 개발정보들은 stackoverflow 에서 찾을 수 있다. 그러나 한국어로 된 개발정보는 꽤 많이 티스토리가 검색됨을 알게 되었다. 아무래도 빠르게 내용을 확인하기 위해서 내게는 영어보다는 한국어가 매우 편하다.
오늘 vue 와 여러 javascript 정보를 검색하면서 여러번 티스토리가 검색되었다. 그런데 아직 카카오 데이터 센터 화재에서 티스토리가 복구가 되지 않아 내용을 볼 수 없었다. 꽤 많은 한국어 자료들이 facebook 에도 있을 것 같긴한데, 검색이 되지 않으니 무용지물이다.
오늘 티스토리 개발 블로그들의 도움을 많이 받고 있다는 것을 느낀 하루였다.
오늘은
- stackoverflow 만 있으면 개발이 되는 줄 알았는데. 2022.10.17
- postgresql 에서 IS DISTINCT FROM 비교문 2022.10.05
- 웹브라우저에서 IntersectionObserver 함수 2022.06.20
stackoverflow 만 있으면 개발이 되는 줄 알았는데.
postgresql 에서 IS DISTINCT FROM 비교문
오늘 postgresql 에서 where 조건에 비교문을 작성하였다. 파이썬에서 None 에 대해 비교하듯이 Null 과 비교하자 같은 결과가 나오지 않는 것을 발견했다.
파이썬에서
None != 8 이라고 하면 True 가 된다.
javascript 에서도 유사하게
null != 8 과 undefined != 8 모두 true 가 된다.
그런데 Postgresql 에서
select null != 8; 은 null 이 된다. where 절에서 특정 row의 column 이 null 인 상태에서 이런 비교 연산이 내부적으로 동작한다면 Python 과 JS 에서 사용하는 의도와 null 이 포함된 row 가 나오지 않게 된다.
이를 방지하기 위해 IS DISTINCT FROM 로 비교할 수 있다.
select null is distinct from 8 처럼 사용하면 true 라는 결과를 얻을 수 있다.
유사하게
Postgresql 에서는
select null=8 에 대해서 null 이라는 결과를 리턴하는데
select null is not distinct from 8 라고 사용하면 false 라는 결과를 얻을 수 있다.
웹브라우저에서 IntersectionObserver 함수
회사에서 한 프로젝트가 IE11 을 버리기로 했다.(내부 admin 시스템은 사용자가 사용하는게 아니라서 크롬에 최적화 해서 사용하고 있었다. 그런데 사용자 사이트는 누가 사용할지 모르기 때문에 IE11을 지원하고 있었다.) 이제는 IE11 때문에 사용 못했던 코드를 더욱 가감하게 사용할 수 있게 되었다. (물론 다른 프로젝트는 아직 IE11을 유지하고 있다. )
이렇게 해서 여러가지 일을 처리하다 기존에는 관심을 가지지 않았던 신기한 JS 함수를 알게 되었다.
IntersectionObserver 라고 해서 특정 element 가 화면에 viewport 에 보여주는지 여부를 알려주는 함수가 존재했다. 전에 이러한 기능을 구현하려고 했으면 timeout 함수로 주기적으로 element 가 어디에 위치하는지 검사 해야 했다. 그런데 이 함수가 있으면 그 것보다는 효율적으로 적절하게 이벤트를 호출해 주는 것 같다. 이 기능을 이용해서 특정 element 가 현재 viewport 를 기준으로 위에 존재하는지, viewport 에 보이는지, viewport 아래에 위치하는지 확인 할 수 있는 기능을 사용할 수 있다.
https://stackoverflow.com/a/58981159/6652082