셔틀버스 기능 개발 중 팀장님께 파티셔닝과 샤딩에 대한 설명을 듣게 되었다. 잊지 않기 위해 간단한 개념을 적어두기로 한다. 둘을 간단히 비교하자면 파티셔닝은 수직 분할, 샤딩은 수평 분할의 개념을 생각하면 된다. 파티셔닝 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법이다. 파티셔닝 방법 Horizontal Partitioning 데이터 개수를 기준으로 나누어 Partitioning 하는 방법이다. Sharding이 Horizontal Partitioning과 관련되는데, 같은 테이블 스키마를 가진 데이터를 데이터베이스 여러 개에 분산하여 저장하는 방법을 일컫는 용어이기 때문이다. 때문에 Sharding을 Horizontal Partition`이라고 볼 수도 있다. 샤딩 DBMS 한 개로 처..
JSON 구조 버스 목록 데이터와 그 하위 필드에 정류소에 대한 데이터가 중첩되어 있는 형태 var busObj = [{ district: "4", districtName: "서대문구", busNo: "1234", routes: [ {name: "정류장명 1", time: "09:00"}, {name: "정류장명 2", time: "09:10"} {name: "정류장명 3", time: "09:20"} ] }, { district: "9", districtName: "마포구", busNo: "5678", routes: [ {name: "정류장명 1", time: "10:00"}, {name: "정류장명 2", time: "10:10"} {name: "정류장명 3", time: "10:20"} ] }] V..
코드 설명 \n 문자열 안에서 줄을 바꿀 때 \t 문자열 사이에 탭 간격을 줄 때 \ 문자 \를 그대로 표현 ' 작은 따옴표를 그대로 표현 " 큰 따옴표를 그대로 표현 \r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동) \f 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) \a 벨 소리 (출력할 때 PC 스피커에서 '삑' 소리 출력 \b 백 스페이스 \000 널 문자
블로그에 글을 쓰다 에디터의 링크 추가 기능 중 새 창으로 열기 기능을 이용했는데, target="_blank" 외에 rel="noopener" 라는 속성이 함께 추가되는 걸 발견했다. 무슨 기능을 하는 속성인지 궁금해 찾아보았는데 피싱공격에 대응하는 중요한 기능의 속성이라는 걸 알게 되었다. 이번 기회에 관련 내용을 정리하고 이를 실제 프로젝트에도 적용해보고자 한다. Tabnabbing 공격 Tabnabbing이란 HTML 문서 내에서 새 창 링크(target="_blank"인 Anchor 태그)를 클릭 했을 때, 새로 열린 창에서 기존 문서의 window.opener의 location 값을 피싱 사이트로 변경해 사용자의 로그인 정보 등을 탈취하는 피싱 공격이다. target="_blank"인 Anch..
성능 최적화 최근 사내 프로젝트를 진행하면서 풀페이지 플러그인을 이용하게 되었는데, 무거운 플러그인의 영향인지 사이트 최초 로딩 속도가 너무 느려 이를 보완할 수 있는 성능 최적화 방법에 대해 찾아보았다. 그동안 프로젝트를 진행하며 사이트가 느리다고 느껴질 때마다 서버 때문인가? 라는 안일한 생각으로 프론트단에서 할 수 있는 성능에 대한 처리를 미뤄왔었는데 이번 기회에 확실히 정리해 차후 진행할 업무 및 개인 프로젝트에 적용해보고자 한다. 성능 측정하기 1. Lighthouse 크롬 개발자 도구 중 Lighthouse(개편 전 Audit) 탭을 이용하여 사이트의 성능 측정 가능 Lighthouse Guide) 사용 방법 확장 프로그램 설치 시크릿 창 열기 크롬 개발자 도구 Lighthouse 탭 클릭 원..