셔틀버스 기능 개발 중 팀장님께 파티셔닝과 샤딩에 대한 설명을 듣게 되었다. 잊지 않기 위해 간단한 개념을 적어두기로 한다. 둘을 간단히 비교하자면 파티셔닝은 수직 분할, 샤딩은 수평 분할의 개념을 생각하면 된다. 파티셔닝 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법이다. 파티셔닝 방법 Horizontal Partitioning 데이터 개수를 기준으로 나누어 Partitioning 하는 방법이다. Sharding이 Horizontal Partitioning과 관련되는데, 같은 테이블 스키마를 가진 데이터를 데이터베이스 여러 개에 분산하여 저장하는 방법을 일컫는 용어이기 때문이다. 때문에 Sharding을 Horizontal Partition`이라고 볼 수도 있다. 샤딩 DBMS 한 개로 처..
요즘 매일 아침 팀원들과 함께 분량을 정해 약 30분간 기획 강의를 듣는다. 듣고나면 팀장님이 사다리 타기로 한 명을 지정해 문제를 주시는데 오늘은 동료에게 강의 내용 대신 Javascript 문제를 내주셔서 함께 풀어보았다. Q. 다음 버튼 A를 누르면 Prompt 창이 뜨고, 입력 받은 값이 하단의 태그에 들어간다. B 버튼을 눌러 뜨는 모달 창이 동일한 동작을 하도록 코드를 작성하시오. 값변경(prompt사용) 값변경(bootstrap modal사용) 안녕하세요. Test 값입니다. Modal title 취소 확인 var myPrompt = function () { // 정답 작성 } $(function () { $("#aa").click(function () { var a = prompt("값을 ..
사내 프로젝트 진행 중 특정 기능을 Vue.js로 개발해보기로 했는데 (너무 신남! 😊) IE 크로스 브라우징 체크를 너무 뒤늦게 해버렸다. Arrow Function 등의 ES6 문법이 IE에서 지원되지 않는다는 걸 알고 있었는데, 왜 생각을 못했지? 개발 막바지가 되어서야 다급히 Babel, Polyfill을 구글링해 아래와 같이 CDN을 연결해 해결했다. 구글링하며 초반에 적용한 몇몇 CDN들이 제대로 동작하지 않았던 것을 보니 버전을 타는 것 같기도 하다. UI 개발 하면서 중간중간 크로스 브라우징하는 습관이 잘 되어있는 편인데, 처음으로 실제 프로젝트에서 JS Framework로 개발을 하다보니 동작을 구현하는 데에만 너무 신경이 쏠려있었던 것 같다. 앞으로 이런 부분도 꼼꼼히 체크해야지.
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 널 문자
Parameter vs. Argument Parameter와 Argument는 흔히 같은 의미로 해석되는 경우가 많은데, 사실 그 정의를 알아보면 확연히 다른 의미를 가진다는 것을 알 수 있다. 개발 서적을 읽으며 종종 드는 생각은 번역된 책을 읽다 보면 이 분야에서 자주 사용되는 단어의 개념이 원문에 비해 애매하게 다가오는 경우가 많다는 점이다. 책을 읽을 때마다 애매하게 느껴지는 용어들을 틈틈이 정리해보아야겠다. 더불어 영어 공부도! 🙄 Parameter (매개변수) 함수를 선언(declare)할 때 해당 선언부에 정의되는 변수 Argument (인자, 전달인자, 실행인자) 함수를 호출(call)할 때 함수의 매개변수로 전달되는 값 예시 아래 예시를 통해 그 쓰임을 자세히 확인할 수 있다. funct..
구글 차트의 간략한 사용법과 반응형 적용법을 알아보자. 자세한 사용법은 공식 문서를 확인 API 연결하기 차트 만들기 원하는 차트 유형 선택 아래 차트 리스트에서 원하는 유형을 선택하여 클릭 Chart Gallery HTML(마크업) 추가 일반적으로 많이 사용하는 컬럼형 차트를 예시로 추가해보자. 아래와 같이 원하는 영역에 차트 마크업을 추가한다. 스크립트 실행하기 google.charts.load('current', {'packages':['bar']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Year', 'Sales', 'Ex..
블로그에 글을 쓰다 에디터의 링크 추가 기능 중 새 창으로 열기 기능을 이용했는데, target="_blank" 외에 rel="noopener" 라는 속성이 함께 추가되는 걸 발견했다. 무슨 기능을 하는 속성인지 궁금해 찾아보았는데 피싱공격에 대응하는 중요한 기능의 속성이라는 걸 알게 되었다. 이번 기회에 관련 내용을 정리하고 이를 실제 프로젝트에도 적용해보고자 한다. Tabnabbing 공격 Tabnabbing이란 HTML 문서 내에서 새 창 링크(target="_blank"인 Anchor 태그)를 클릭 했을 때, 새로 열린 창에서 기존 문서의 window.opener의 location 값을 피싱 사이트로 변경해 사용자의 로그인 정보 등을 탈취하는 피싱 공격이다. target="_blank"인 Anch..